Skip to content

ci(dco): ask for a sign-off on authored commits, not on merge commits - #84

Merged
frahlg merged 1 commit into
mainfrom
claude/hopeful-fermi-390u3f
Aug 16, 2026
Merged

ci(dco): ask for a sign-off on authored commits, not on merge commits#84
frahlg merged 1 commit into
mainfrom
claude/hopeful-fermi-390u3f

Conversation

@frahlg

@frahlg frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member

Summary

Not a driver change — this removes the deadlock that stopped #65 from merging
and would have caught the next fork pull request just the same.

Branch protection requires a pull request to be up to date with main before it
merges. The merge commit GitHub's Update branch button writes carries no
Signed-off-by trailer, and dco counted it. So bringing a stale pull request
up to date was the very act that made it unmergeable.

There is no way out from inside that rule. Fixing it means force-pushing a
trailer onto a commit the contributor did not write, and when the pull request
comes from a fork this repository cannot push to, nobody who can merge can also
do that. It deadlocked #65 — which had to be relanded as #83 to carry a one-line
trailer — and a0d5d73 on that same branch before it.

git rev-list gains --no-merges. A sign-off certifies authored content; a
merge commit from the update button carries none, so the check now asks for the
trailer on the commits that do. That is the line the upstream DCO app draws too.
The failure message also now names the two commands that fix a genuine miss.

The trade-off, stated plainly: a conflict resolved inside a merge commit is
content this check no longer sees. The reviewable content still arrives on the
authored commits either side of it, and every other check in the suite still
runs against the merged tree.

Driver evidence

  • Driver id: not applicable — CI configuration only, no driver, manifest or
    catalog file is touched
  • Device make/model: not applicable
  • Firmware tested: not applicable
  • Protocol/register source: not applicable
  • Hardware test performed: not applicable
  • Known limits: as stated in the trade-off above

Safety

  • The driver starts read-only, or this is a separately reviewed control change. — no driver changes
  • Vendor signs are converted at the driver boundary. — not applicable
  • Cached telemetry becomes stale instead of being re-emitted as fresh. — not applicable
  • No credentials, serial numbers, private addresses or site data are included.

Package or promotion evidence

not applicable — no package version, target, control contract or release
candidate changes, and no artifact bytes move.

Checks

  • Commits include Signed-off-by.
  • Verified against the exact range that failed on make the signed artifact agree that myuplink is read-only #65
    (4fb8608..01da267): it fails under the old rule and passes under the new
    one.
  • Verified a genuine violation is still caught: an authored commit with no
    trailer fails, including when a merge commit sits in the same range.
  • validate.yml parses; all six jobs intact.

Generated by Claude Code

Branch protection requires a pull request to be up to date with main before it
merges, and the merge commit GitHub's "Update branch" button writes carries no
Signed-off-by trailer. The check counted it, so bringing a stale pull request up
to date was the act that made it unmergeable.

There was no way out from inside the rule. Fixing it means force-pushing a
trailer onto a commit the contributor did not write, and for a pull request from
a fork this repository cannot push to, nobody who can merge can also do that.
It deadlocked #65 -- which had to be relanded as #83 to carry a one-line trailer
-- and a0d5d73 on that same branch before it. Every fork pull request reaching
main after another one merges would have hit it next.

A sign-off certifies authored content. A merge commit from the update button
carries none, so the check now asks for the trailer on the commits that do, the
same line the upstream DCO app draws. A conflict resolved inside a merge commit
becomes content the check no longer sees; the reviewable content still arrives
on the authored commits either side of it.

The failure message now also names the two commands that fix a genuine miss.

Verified against the commit range that failed on #65 (4fb8608..01da267): it
fails under the old rule and passes under the new one, while an authored commit
with no trailer still fails.

Signed-off-by: Fredrik Ahlgren <[email protected]>
@frahlg
frahlg merged commit 8291a46 into main Aug 16, 2026
6 checks passed
@frahlg
frahlg deleted the claude/hopeful-fermi-390u3f branch August 16, 2026 08:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant